home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / Oberon⁄F™ 1.1 / Dev / Rsrc / New / Views3 (.txt) < prev    next >
Encoding:
Oberon Document  |  1995-08-09  |  4.8 KB  |  140 lines  |  [oODC/obnF]

  1. Documents.StdDocumentDesc
  2. Documents.DocumentDesc
  3. Containers.ViewDesc
  4. Views.ViewDesc
  5. Stores.StoreDesc
  6. Documents.ModelDesc
  7. Containers.ModelDesc
  8. Models.ModelDesc
  9. Stores.ElemDesc
  10. TextViews.StdViewDesc
  11. TextViews.ViewDesc
  12. TextModels.StdModelDesc
  13. TextModels.ModelDesc
  14. TextModels.AttributesDesc
  15. Helvetica
  16. Helvetica
  17. Helvetica
  18. StdStamps.StdViewDesc
  19. Helvetica
  20. Helvetica
  21. Helvetica
  22. MODULE NewViews;
  23.     IMPORT Domains, Stores, Ports, Views, Controllers, Properties;
  24.     CONST
  25.         minVersion = 0; maxVersion = 0;
  26.     TYPE
  27.         View = POINTER TO RECORD (Views.ViewDesc)
  28.             (* view fields *)
  29.         END;
  30.         ViewOp = POINTER TO RECORD (Domains.OperationDesc)
  31.             view: View;
  32.             (* view-operation fields *)
  33.         END;
  34.     (* ViewOp *)
  35.     PROCEDURE (op: ViewOp) Do;
  36.     BEGIN
  37.         (* perform view operation *)
  38.         Views.Update(op.view, Views.keepFrames)    (* restore v in any frame that displays it *)
  39.     END Do;
  40.     PROCEDURE NewViewOp (view: View (* additional parameters *) ): ViewOp;
  41.         VAR op: ViewOp;
  42.     BEGIN
  43.         ASSERT(view # NIL, 20);
  44.         NEW(op);
  45.         (* set up operation parameters *)
  46.         RETURN op
  47.     END NewViewOp;
  48.     (* View *)
  49.     PROCEDURE (v: View) Internalize (VAR rd: Stores.Reader);
  50.         VAR version: SHORTINT;
  51.     BEGIN
  52.         (*ASSERT(v not yet initialized, 20);*)
  53.         v.Internalize^(rd);
  54.         IF ~rd.cancelled THEN
  55.             rd.ReadVersion(minVersion, maxVersion, version);
  56.             IF ~rd.cancelled THEN
  57.                 (* read view fields *)
  58.             END
  59.         END
  60.     END Internalize;
  61.     PROCEDURE (v: View) Externalize (VAR wr: Stores.Writer);
  62.     BEGIN
  63.         (*ASSERT(v already initialized, 20);*)
  64.         v.Externalize^(wr);
  65.         wr.WriteVersion(maxVersion);
  66.         (* write view fields *)
  67.     END Externalize;
  68.     PROCEDURE (v: View) CopyFrom (source: Views.View);
  69.     BEGIN
  70.         (*ASSERT(v not yet initialized, 20);*)
  71.         ASSERT(source # NIL, 21);
  72.         ASSERT(Stores.SameType(v, source), 23);
  73.         v.CopyFrom^(source);
  74.         WITH source: View DO
  75.             (*ASSERT(source already initialized, 22);*)
  76.             (* copy view fields *)
  77.         END
  78.     END CopyFrom;
  79.     PROCEDURE (v: View) Restore (f: Views.Frame; l, t, r, b: LONGINT);
  80.         VAR w, h: LONGINT;
  81.     BEGIN
  82.         (* restore foreground in rectangle (l, t, r, b) *)
  83.         (* replace the body of this procedure with your Restore behavior *)
  84.         v.context.GetSize(w, h);
  85.         f.DrawLine(0, 0, w, h, f.dot, Ports.red)
  86.     END Restore;
  87.     PROCEDURE (v: View) HandleCtrlMsg (f: Views.Frame; VAR msg: Controllers.Message; VAR focus: Views.View);
  88.     BEGIN
  89.         ASSERT(focus = NIL, 23);
  90.         WITH msg: Controllers.PollOpsMsg DO
  91.             (* specify which editing operations are supported *)
  92.         | msg: Controllers.TrackMsg DO
  93.             (* implement mouse tracking *)
  94.         | msg: Controllers.EditMsg DO
  95.             (* implement editing operations *)
  96.         ELSE    (* ignore other messages *)
  97.         END
  98.     END HandleCtrlMsg;
  99.     PROCEDURE (v: View) HandlePropMsg (VAR p: Properties.Message);
  100.         CONST defaultWidth = 100 * Ports.mm; defaultHeight = 70 * Ports.mm;
  101.     BEGIN
  102.         WITH p: Properties.FocusPref DO
  103.             p.atLocation := FALSE; p.hotFocus := FALSE; p.setFocus := TRUE; p.selectOnFocus := TRUE
  104.         | p: Properties.SizePref DO
  105.             IF p.w = Views.undefined THEN p.w := defaultWidth END;
  106.             IF p.h = Views.undefined THEN p.h := defaultHeight END
  107.         ELSE    (* ignore other messages *)
  108.         END
  109.     END HandlePropMsg;
  110.     (** miscellaneous **)
  111.     PROCEDURE Focus* (): Views.View;
  112.         VAR v: Views.View;
  113.     BEGIN
  114.         v := Controllers.FocusView();
  115.         IF (v # NIL) & (v IS View) THEN RETURN v(View) ELSE RETURN NIL END
  116.     END Focus;
  117.     PROCEDURE New* (): Views.View;
  118.         VAR v: View;
  119.     BEGIN
  120.         NEW(v);
  121.         (* initialize view fields *)
  122.         RETURN v
  123.     END New;
  124.     PROCEDURE Deposit*;
  125.     BEGIN
  126.         Views.Deposit(New())
  127.     END Deposit;
  128. END NewViews.
  129. TextControllers.StdCtrlDesc
  130. TextControllers.ControllerDesc
  131. Containers.ControllerDesc
  132. Controllers.ControllerDesc
  133. TextRulers.StdRulerDesc
  134. TextRulers.RulerDesc
  135. TextRulers.StdStyleDesc
  136. TextRulers.StyleDesc
  137. TextRulers.AttributesDesc
  138. Helvetica
  139. Documents.ControllerDesc
  140.